package com.yan.designPatterns.flyWeight;

/**
 * ，intern 方法利用了“Flyweight”（享元模式）的思想。
 * 享元模式：这种模式用来减少创建大量相似对象所需的资源消耗。在 Java 的字符串池中，通过 intern 方法来复用已经存在的字符串实例，避免了对于相同内容字符串的多次实例化，从而节省了内存。
 * 当你调用 intern 方法时，Java 运行时会在字符串常量池中查找是否有相同内容的字符串。如果有，就返回这个字符串的引用；如果没有，就把当前字符串加入池中，并返回它的引用。这样，对于任何给定的字符串字面值，只要内容相同，无论调用多少次 intern 方法，都只会有一个实例存在于池中。
 */
public class flyWeightTest {

    public static void main(String[] args) {
        String a = "hello";
        String b = "java";
        String c = "hellojava";
        System.out.println(c == a+b); //false
        System.out.println(c == (a+b).intern()); //true
    }
}
